package com.njzxw.fs.commonutil.interfaces;

import com.aliyun.oss.OSS;
import com.njzxw.fs.commonutil.bean.FileBean;
import com.njzxw.fs.commonutil.bean.PartBean;

import java.io.InputStream;
import java.util.List;

/**
 * 文件本地流处理操作
 */
public interface OssUtilInterface {

    public boolean connect();

    /**
     * 临时保存到某位置,统一存储到临时目录中 一般属于文件上传接口调用
     *
     * @param inputStream
     * @param name 随机名称，保持唯一
     * @return
     */
    public FileBean saveTemp(InputStream inputStream,String name,long size);

    public boolean close();

    /**
     * 处理文件基本名称信息
     *
     * @param name
     * @param size
     * @return
     */
    FileBean exeName(String name, long size);

    /**
     * 存儲文件 存储文件信息 返回值为t_resouce_file表中的ID
     *
     * @param id
     * @param path 如/user
     * @return
     */
    public String exeFile(String id,String path);

    /**
     * 存儲文件 存储文件信息 返回值为t_resouce_file表中的ID
     *
     * @param id
     * @param path 如/user
     * @return
     */
    public String exeFile(String id,String path,String oper_id,int oper_type,String oper_name);

    /**
     * 存儲文件 存储文件信息 返回值为t_resouce_file表中的ID
     *
     * @param ids
     * @param path 如/user
     * @return
     */
    public List<String> exeFile(List<String> ids, String path);

    /**
     * 存儲文件 存储文件信息 返回值为t_resouce_file表中的ID
     *
     * @param ids
     * @param path 如/user
     * @param oper_id 操作人 上传人
     * @param oper_type 1后台人员2前端人员
     * @return
     */
    public List<String> exeFile(List<String> ids, String path,String oper_id,int oper_type,String oper_name);


    /**
     *
     * 目前主要是阿里云oss 使用
     *
     * 创建分片上传初始化
     *
     * @param endpoint
     * @param accessKeyId
     * @param accessKeySecret
     * @return
     */
    public void createPart(PartBean partBean) throws Exception;

    /**
     *
     * 目前主要是阿里云oss 使用
     *
     * 开始进行分片上传
     *
     * @param i 当前需要上传的分片序号
     * @param partSize 分片大小 每个分片多少B
     * @param partCount 分片数量
     * @param oss
     */
    public void uploadPart(PartBean partBean) throws Exception;

    /**
     *
     * 目前主要是阿里云oss 使用
     *
     * 关闭分片上传
     *
     * @param partBean
     */
    public void closePart(PartBean partBean) throws Exception;


    /**
     * 类型人员
     */
    public enum OperType{
        BACKGROUND,FRONT;

        public static int getValue(OperType operType){

            switch (operType){
                case BACKGROUND:
                    return 1;
                case FRONT:
                    return 2;
                default:
                    break;
            }
            return 0;
        }

    }

}
